package classes;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * Classe que armazenara todos os cadastros feitos em um arquivo.
 * @author equipe
 *
 */
public abstract class GravaCadastros{
	
	public static File dataFile = new File("arquivo.txt");
	
	
	/**
	 * Metodo que permite escrever objetos em um arquivo.
	 * @param lista
	 * 		Colecao de professores a ser escrita no arquivo.
	 * @throws IOException
	 * 		Lanca uma excecao quando ocorre uma erro de Entrada/Saida.
	 * @throws FileNotFoundException
	 * 		Lanca uma excecao quando uma tentativa de acessar um arquivo que nao existe no disco falha.
	 */
	public static void writeObjects(List<Professor> lista) throws IOException, FileNotFoundException {
		ObjectOutputStream out = null;
		try {
			out = new ObjectOutputStream(new BufferedOutputStream(
					new FileOutputStream(dataFile)));

			out.writeObject(lista);

		} finally {
			out.close();
		}

	}
	
	/**
	 * Metodo que permite ler objetos de um arquivo.
	 * @return
	 * 		Retorna uma colecao de professores em um arquivo.
	 * @throws IOException
	 * 		Lanca uma excecao quando ocorre uma erro de Entrada/Saida.
	 * @throws FileNotFoundException
	 * 		Lanca uma excecao quando uma tentativa de acessar um arquivo que nao existe no disco falha.
	 * @throws ClassNotFoundException
	 * 		Lanca uma excecao se ocorrer um erro ao tentar carregar a classe.
	 */
	public static ArrayList<Professor> readObjects() throws IOException,FileNotFoundException, ClassNotFoundException {
		ObjectInputStream in = null;
		ArrayList<Professor> profs = null;
		try {
			
	         in = new ObjectInputStream(new BufferedInputStream(
	               new FileInputStream(dataFile)));

	         
	        Object date = in.readObject();
	        ArrayList<Professor> date2 = (ArrayList<Professor>) date;
			profs = date2;
	        
	        	   
	         } catch (EOFException e) {
	         
	         
	      } finally {
	         in.close();
	         
	      }
		return profs;
	   
	}
	
	
}
